package com.ruoyi.materialCuttingPlan.domain;

import com.ruoyi.common.annotation.Excel;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.List;

/**
 * 门窗详细信息对象 mcp_windows
 * 
 * @author ruoyi
 * @date 2025-07-05
 */
public class McpWindows extends McpBaseEntity
{
    private static final long serialVersionUID = 1L;

    /** ID */
    private Long id;

    @Excel(name = "门窗名称")
    private String windowsName;
    /** 所属项目ID */
    @Excel(name = "所属项目ID")
    @NotNull(message = "所属项目不能为空")
    private Long projectId;

    @Excel(name = "所属项目")
    private String projectName;

    /** 所属公司ID */
    @Excel(name = "所属公司ID")
    @NotNull(message = "所属公司不能为空")
    private Long companyId;

    @Excel(name = "所属公司")
    private String companyName;

    /** 门窗类型ID */
    @Excel(name = "门窗类型ID")
    @NotNull(message = "门窗类型不能为空")
    private Long typeId;

    @Excel(name = "门窗类型")
    private String typeName;

    /** 门窗宽度(单位:mm) */
    @Excel(name = "门窗宽度(单位:mm)")
    @NotNull(message = "门窗宽度不能为空")
    private BigDecimal width;

    /** 门窗高度(单位:mm) */
    @Excel(name = "门窗高度(单位:mm)")
    @NotNull(message = "门窗高度不能为空")
    private BigDecimal height;

    /** 数量 */
    @Excel(name = "数量")
    @NotNull(message = "数量不能为空")
    private Long quantity;

    /** 门窗类型图片路径 */
    @Excel(name = "门窗类型图片路径")
    private String typeImage;

    /** 门窗用料公式值信息 */
    @Valid
    private List<McpVariableValue> mcpVariableValueList;

    public void setId(Long id) 
    {
        this.id = id;
    }

    public Long getId() 
    {
        return id;
    }

    public String getWindowsName() {
        return windowsName;
    }

    public void setWindowsName(String windowsName) {
        this.windowsName = windowsName;
    }

    public void setProjectId(Long projectId) 
    {
        this.projectId = projectId;
    }

    public Long getProjectId() 
    {
        return projectId;
    }

    public Long getCompanyId() {
        return companyId;
    }

    public void setCompanyId(Long companyId) {
        this.companyId = companyId;
    }

    public void setTypeId(Long typeId)
    {
        this.typeId = typeId;
    }

    public Long getTypeId() 
    {
        return typeId;
    }

    public String getProjectName() {
        return projectName;
    }

    public void setProjectName(String projectName) {
        this.projectName = projectName;
    }

    public String getCompanyName() {
        return companyName;
    }

    public void setCompanyName(String companyName) {
        this.companyName = companyName;
    }

    public String getTypeName() {
        return typeName;
    }

    public void setTypeName(String typeName) {
        this.typeName = typeName;
    }

    public void setWidth(BigDecimal width)
    {
        this.width = width;
    }

    public BigDecimal getWidth() 
    {
        return width;
    }

    public void setHeight(BigDecimal height) 
    {
        this.height = height;
    }

    public BigDecimal getHeight() 
    {
        return height;
    }

    public void setQuantity(Long quantity) 
    {
        this.quantity = quantity;
    }

    public Long getQuantity() 
    {
        return quantity;
    }

    public List<McpVariableValue> getMcpVariableValueList()
    {
        return mcpVariableValueList;
    }

    public void setMcpVariableValueList(List<McpVariableValue> mcpVariableValueList)
    {
        this.mcpVariableValueList = mcpVariableValueList;
    }

    public String getTypeImage() {
        return typeImage;
    }

    public void setTypeImage(String typeImage) {
        this.typeImage = typeImage;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("projectId", getProjectId())
            .append("typeId", getTypeId())
            .append("width", getWidth())
            .append("height", getHeight())
            .append("quantity", getQuantity())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .append("mcpVariableValueList", getMcpVariableValueList())
            .toString();
    }
}
